import pandas as pd
import configparser
import os

def load_config(path="config.ini"):
    config = configparser.ConfigParser()
    config.read(path, encoding="utf-8")
    return config

def read_excel_with_header(path, header_row, sheet_name=None):
    """读取 Excel（支持指定表名），header_row 从 1 开始计数"""
    if sheet_name:
        print(sheet_name)
        df = pd.read_excel(path, header=header_row - 1, sheet_name=sheet_name)
    else:
        df = pd.read_excel(path, header=header_row - 1)
    return df

def merge_excels(config):
    # 读取配置
    file_a = config["files"]["a"].strip()
    file_b = config["files"]["b"].strip()
    output = config["files"]["output"].strip()
    sheet_a = config["files"].get("a_sheet", "").strip()
    sheet_b = config["files"].get("b_sheet", "").strip()

    a_header_row = int(config["header"]["a_header_row"])
    b_header_row = int(config["header"]["b_header_row"])

    key_a = config["columns"]["key_a"].strip()
    en_a = config["columns"]["en_a"].strip()
    key_b = config["columns"]["key_b"].strip()
    en_b = config["columns"]["en_b"].strip()

    new_col = config["new_column"]["name"].strip()

    # 读取两个表
    df_a = read_excel_with_header(file_a, a_header_row, sheet_a or None)
    df_b = read_excel_with_header(file_b, b_header_row, sheet_b or None)

    print(f"📘 A 表 {os.path.basename(file_a)} ({sheet_a or '默认sheet'}) 读取到 {len(df_a)} 行")
    print(f"📗 B 表 {os.path.basename(file_b)} ({sheet_b or '默认sheet'}) 读取到 {len(df_b)} 行")

    # 合并前统一处理 en 列（小写 + 去空格）
    df_a["_en_lower_"] = df_a[en_a].astype(str).str.lower().str.strip()
    df_b["_en_lower_"] = df_b[en_b].astype(str).str.lower().str.strip()

    # 按英语列小写合并
    merged = pd.merge(
        df_a,
        df_b[[key_b, "_en_lower_"]],
        left_on="_en_lower_",
        right_on="_en_lower_",
        how="left"
    )

    # 写入新列
    merged[new_col] = merged[key_b]

    # 删除辅助列
    merged.drop(columns=[key_b, "_en_lower_"], inplace=True, errors="ignore")

    # 清理掉 Unnamed 列（如有）
    merged = merged.loc[:, ~merged.columns.str.contains("^Unnamed")]

    # 输出
    merged.to_excel(output, index=False)
    print(f"✅ 合并完成，结果已保存到 {output}")
'''
把 b 中的 key 合并到 a 表格中去，合并规则是 en 相同
用法
python merge_excel_by_en.py --config my_merge.ini

'''
if __name__ == "__main__":
    config = load_config("config.ini")
    merge_excels(config)
